const fp = require('lodash/fp');
const cars = [
    {
        name: 'Ferrari FF',
        horsepower: 660,
        dollar_value: 70000,
        in_stock: true
    },
    {
        name: 'Spyker C12 Zagato',
        horsepower: 650,
        dollar_value: 648000,
        in_stock: false
    },
    {
        name: 'Jaguar XKR-S',
        horsepower: 550,
        dollar_value: 13200,
        in_stock: false
    },
    {
        name: 'Audi R8',
        horsepower: 525,
        dollar_value: 114200,
        in_stock: false
    },
    {
        name: 'Aston Martin One-77',
        horsepower: 750,
        dollar_value: 1850000,
        in_stock: true
    },
    {
        name: 'Pagani Huayra',
        horsepower: 700,
        dollar_value: 1300000,
        in_stock: false
    },
];

const _average = function(xs) {
    return fp.reduce(fp.add, 0, xs) / xs.length;
};

const averageDollarValue = function(cars) {
    const dollar_value = fp.map(function(car) {
        return car.dollar_value;
    }, cars);
    return _average(dollar_value);
};

const averageDollarValue2 = fp.flowRight(_average, fp.map(fp.prop('dollar_value')));

console.log('averageDollarValue', averageDollarValue(cars));
console.log('averageDollarValue2', averageDollarValue2(cars));